package main

import (
	"fmt"
	"time"
)

// ==========时间和日期==========

func main() {
	// 获取当前时间
	now := time.Now()
	fmt.Printf("%v, %T\n", now, now) // 2019-12-25 21:19:21.433639 +0800 CST m=+0.000102611, time.Time

	// 获取年、月、日、时、分、秒
	fmt.Printf("年%v, %T\n", now.Year(), now.Year())
	fmt.Printf("月%v, %T\n", now.Month(), now.Month())
	fmt.Printf("月%v, %T\n", int(now.Month()), int(now.Month()))
	fmt.Printf("日%v, %T\n", now.Day(), now.Day())
	fmt.Printf("时%v, %T\n", now.Hour(), now.Hour())
	fmt.Printf("分%v, %T\n", now.Minute(), now.Minute())
	fmt.Printf("秒%v, %T\n", now.Second(), now.Second())
	/*
		年2019, int
		月December, time.Month
		月12, int
		日25, int
		时21, int
		分23, int
		秒51, int
	*/

	// 格式化日期时间, 返回字符串, 数字是固定的
	formatTime := now.Format("2006/01/02 15:04:05")
	fmt.Printf("格式化的日期%q, %T\n", formatTime, formatTime) // 格式化的日期"2019/12/25 21:26:42", string
	formatTime = now.Format("20060102150405")
	fmt.Printf("格式化的日期%q, %T\n", formatTime, formatTime) // 格式化的日期"20191225212730", string
	formatTime = now.Format("2006-01-02 15:04:05")
	fmt.Printf("格式化的日期%q, %T\n", formatTime, formatTime) // 格式化的日期"2019-12-25 21:28:09", string
	formatTime = now.Format("2006_01_02")
	fmt.Printf("格式化的日期%q, %T\n", formatTime, formatTime) // 格式化的日期"2019_12_25", string
	formatTime = now.Format("15.04.05")
	fmt.Printf("格式化的日期%q, %T\n", formatTime, formatTime) // 格式化的日期"21.29.23", string
	formatTime = now.Format("01")
	fmt.Printf("格式化的日期%q, %T\n", formatTime, formatTime) // 格式化的日期"12", string

	// 休眠
	// time.Sleep(time.Hour)  // 休眠一小时
	// time.Sleep(time.Minute)  // 休眠一分钟
	time.Sleep(time.Second)      // 休眠一秒
	time.Sleep(time.Millisecond) // 休眠一毫秒
	time.Sleep(time.Microsecond) // 休眠一微妙
	time.Sleep(time.Nanosecond)  // 休眠一纳秒

	// 获取当前Unix时间戳和UnixNano时间戳
	fmt.Println(now.Unix())     // 1599206420
	fmt.Println(now.UnixNano()) // 1599206420425377000
}
